package models

import "gorm.io/gorm"

type Comment struct {
	gorm.Model
	Content string //评论内容

	PostID *uint
	Post   *Post
	UserID *uint
	User   *User
}

/*
*
 */
func (c *Comment) AfterCreate(tx *gorm.DB) (err error) {
	_, e := c.updateCount(tx)
	return e
}

/*
*
为 Comment 模型添加一个钩子函数，在评论删除时检查文章的评论数量，如果评论数量为 0，则更新文章的评论状态为 "无评论"。
*/
func (c *Comment) AfterDelete(tx *gorm.DB) (err error) {
	count, e := c.updateCount(tx)
	if count == 0 {
		post := &Post{}
		tx.Model(&post).Where("id=?", c.PostID).Update("comment_state", "无评论")
	}
	return e
}

func (c *Comment) updateCount(tx *gorm.DB) (res int, err error) {
	var count int
	tx.Raw("select count(*) from comments where post_id=? and deleted_at is null", c.PostID).Scan(&count)

	var post Post
	tx.Model(&post).Where("id=?", c.PostID).Update("comment_count", count)
	return count, nil
}
